<?php
header("Access-Control-Allow-Origin:*");
error_reporting(E_ALL^E_NOTICE);
defined('PATH_ROOT') || define('PATH_ROOT', $_SERVER['DOCUMENT_ROOT'].'/'); //web根目录。
defined('PATH_DOMAIN') || define('PATH_DOMAIN', $_SERVER['HTTP_HOST'].'/'); //web根目录。
$path = get('delfile');

if(!empty($path))
{
    if(is_file(PATH_ROOT.$path))
        delfile(PATH_ROOT.$path);
    echo json_encode(succjson());
    exit;
}
$path = get('filepath');
if (@$_FILES['file'] == null)
    $ret = errjson('没有文件上传');
else if ($_FILES['file']['error'] > 0)
    $ret = errjson('上传参数出错:' . $_FILES['file']['error']);
else {
    $extfile = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
    $path = str_replace('{Y}', date('Y'), $path);
    $path = str_replace('{M}', date('m'), $path);
    $path = str_replace('{D}', date('d'), $path);
    $path = str_replace('{H}', date('H'), $path);
    $path = str_replace('{I}', date('i'), $path);
    $path = str_replace('{S}', date('s'), $path);
    $path = str_replace('{Rnd}', rand(1000,9999), $path);
    $path = str_replace('{Ext}', $extfile, $path);
    if(strpos($path,'{') !== false || strpos($path,'}') !== false)
        $ret = errjson('filepath文件名解析错误'.$path);
    else
    {
        makedir(dirname(PATH_ROOT.$path)); 
        move_uploaded_file($_FILES['file']['tmp_name'], PATH_ROOT.$path);
        $ret = succjson(array('msg'=>$path,'name'=>$_FILES['file']['name']));
    }
}
echo json_encode($ret);

/**
 * 循环建立新文件夹。
 */
function makedir($dir) {
    if (!$dir)
        return false;
    if(!is_dir($dir))
        return mkdir($dir,0777,true);
    return true;
}
function get($name, $defvalue = '') {
    if(!isset($_GET[$name]))
        return $defvalue;
    $val = $_GET[$name];
    //原始数据监控
    return $val;
}
/**
 * 静默删除文件。
 */
function delfile($file)
{
    try{unlink($file);}catch(Exception $ex){}
}
/**
 * json_函数内部使用，返回失败数据。
 * return errjson('错误信息');
 */
function errjson($error, $errcode = 0, $ext = null) {
    if(is_array($ext))
        return array('result' => false, 'errcode' => $errcode, 'msg' => $error)+$ext;
    return array('result' => false, 'errcode' => $errcode, 'msg' => $error);
}
/**
 * json_函数内部使用，返回成功数据。
 * return succjson();
 * return succjson(array('data'=>$data));
 */
function succjson($ext = null) {
    if(is_array($ext))
        return array('result' => true)+$ext;
    return array('result' => true);
}
?>